﻿//BETA 10
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using Schüleranmeldung.Mail;
using Schüleranmeldung.Database;
using System.IO;
using System.Net.Mail;
using Schüleranmeldung;
using System.Reflection;
using System.Configuration;
namespace Schüleranmeldung
{
    public partial class FormÜbersicht : Form
    {
        int BeriebsID = 0;
        public FormÜbersicht()
        {
            InitializeComponent();           
            
        }
        
        
        private void tmrMails_Tick(object sender, EventArgs e)
        {
            StartDownloadMails();
            
        }

        Thread mailThread;

        private void StartDownloadMails()
        {
            if (mailThread == null || mailThread.ThreadState != ThreadState.Running)
            {
                mailThread = new Thread(new ThreadStart(DownloadMails));
                mailThread.Start();
            }
        }

        private void DownloadMails()
        {
            
            string xml = File.ReadAllText("mail2.xml");//xml-Datei
            MailMessage mail = new MailMessage();
            mail.Body = xml;
            //client_MailReceived(mail);
            //try
            {
                SetWorkingBarVisible(true);
                Pop3Client.Pop3Client client = new Pop3Client.Pop3Client();
                client.Info += new Pop3Client.Pop3InfoHandler(client_Info);
                client.MailReceived += new Pop3Client.Pop3MailReceivedHandler(client_MailReceived);
                //client.Connect("pop.googlemail.com", "hhekprojekt", "hhekwolf", true);
                AppSettingsReader config =  new AppSettingsReader();
                client.Connect((string)config.GetValue("POP", typeof(string)), (string)config.GetValue("User", typeof(string)), (string)config.GetValue("Password", typeof(string)), true);                
                client.getMails();
                //client.Disconnect();
            }
            //catch (Exception ex)
            //{
            //    //TODO: Logfile
            //}
            SetWorkingBarVisible(false);
        }

        void client_Info(string message)
        {
            SetStatusLabel(message);            
        }
        
        List<Schueler> schülerList = new List<Schueler>();
        List<SchuelerErzAdr> ErzAdrList = new List<SchuelerErzAdr>();
        List<K_AllgAdresse> BetriebList = new List<K_AllgAdresse>();
        List<Schueler_AllgAdr> SchuelerAllgAdrList = new List<Schueler_AllgAdr>();//neue Liste
        List<SchuelerLernabschnittsdaten> SchuelerLernabschnittsdatenList = new List<SchuelerLernabschnittsdaten>();//Attribut Bildungsgang
        List<AllgAdrAnsprechpartner> AllgAdrAnsprechpartnerList = new List<AllgAdrAnsprechpartner>();
        void ListDB() 
        {
            AppBackend.Instance.SchildDB.Schueler.AddObject(schülerList[0]);
            try
            {
                AppBackend.Instance.SchildDB.SaveChanges();
            }
            catch (Exception ex3) 
            {
                Console.Write("fehler add{0}", ex3.InnerException);
            }
        }
        // Der XML (eMail) wird auf gesplitte in den jeweiligen Datenbank Objekte, Schueler,SchuelerErzAdr,K_AllgAdresse,Schueler_AllgAdr.
        // Den erstellten Objekten ein ID Wert und wenn nötige weitere Wert übergeben.
        // Die Wert werden in von Abfragen der Datenbank Verwaltungsanwendung ermittelt
        void client_MailReceived(System.Net.Mail.MailMessage mail)
        {
            int SchuelerID = 0;
            int ErzID = 0;
            //int BeriebsID = 0;
            //int Schueler_AllgAdrID = 0;
            //int AllgAdrAnsprechpartnerID = 0;
            //string str;
            //string SchulID;
            
                //Parsen
                MailParser parser = new MailParser();
                Dictionary<string, object> objects = parser.ParseMail(mail);
                foreach (KeyValuePair<string, object> item in objects)
                {                    
                    if (item.Key == "Schueler")
                    {                       
                        if (!schülerList.Where(o => o.ID == ((Schueler)item.Value).ID).Any())
                        {
                            Schueler s = (Schueler)item.Value;
                            if (s.StrGeschlecht == "Frau")
                                s.Geschlecht = (short)4;
                            else if (s.StrGeschlecht == "Herr")
                                s.Geschlecht = (short)3;
                            s.Strasse = s.Strasse+" "+s.Hausnr;
                            if (s.LSSchulNr == null)//ermitteln und übergeben der SchulNr an Schueler
                                if (s.LSName != null)
                                    foreach (K_Schule _Schule in AppBackend.Instance.SchildDB.K_Schule.Where(o => o.Name == s.LSName))
                                    {
                                        s.LSSchulNr = _Schule.SchulNr;
                                        s.LSSchulform = _Schule.SchulformKrz;
                                        s.LSSchulformSIM = _Schule.SchulformKrz;                            
                                    }

                            s.LSEntlassArt = AppBackend.Instance.getSchulAbschluss(s.LSAbschlussArt);
                            s.Aufnahmedatum = DateTime.Now.Date;                       
                            s.LSJahrgang = s.LSKlasse;
                            if (Database.AppBackend.Instance.SchildDB.Schueler.Any())
                                s.ID = AppBackend.Instance.SchildDB.Schueler.Max(o => o.ID) + 1;// Ermittelt den letzen ID Wert aus der DB und addiert ihn +1
                            else
                                s.ID = 0;
                            s.Status = 0;
                            s.Geloescht = "-";                            
                            s.SchulnrEigner = 174518; // muß noch abgefragt werden
                            SchuelerID = s.ID;
                            s.Land = "NW";// abfrage
                            
                            //Bildungsang abspeichern ? EigeneSchule_Forum                            
                            foreach (EigeneSchule_Fachklassen Fachklassen in AppBackend.Instance.SchildDB.EigeneSchule_Fachklassen.Where(o => o.Bezeichnung == s.Beruf))
                            {
                                //s.ASDSchulform = "A01";
                                //s.Fachklasse_ID = 27;
                                //s.ASDJahrgang = "01";
                                s.ASDSchulform = Fachklassen.BKIndexTyp;
                                s.Fachklasse_ID = Fachklassen.ID;
                                s.ASDJahrgang = Fachklassen.AP;
                            }
                            if (s.Beruf.Length > 30)
                                s.Beruf = s.Beruf.Remove(29);// Wenn der übergeben aus der WebApp String zu lang ist wir der auf 29 char gekürzt 
                            //
                            foreach (K_Staat Staat in AppBackend.Instance.SchildDB.K_Staat.Where(o => o.Bezeichnung == s.StaatAbk))
                                s.StaatKrz = Staat.StatistikKrz;                           
                                
                            s.GU_ID = GU_ID_Erstellen();// generiert den GU_ID und übergibt ihn                            
                            if (!AppBackend.Instance.SchildDB.K_Ort.Any(o => o.PLZ == s.PLZ))// Ermittelt die PLZ aus einer anderen DB(asdtabs) wenn die PLZ in der DB VerwaltungsApp nicht vorhanden ist
                            {
                                K_Ort ort = AppBackend.Instance.getOrtByPLZ(s.PLZ);
                                if (ort.Bezeichnung == null)
                                {
                                    ort.Bezeichnung = s.OrtAbk;
                                }
                                AppBackend.Instance.SchildDB.K_Ort.AddObject(ort);
                                AppBackend.Instance.SchildDB.SaveChanges();    
                            }
                            //von der eMail(XML) werden falsche Infos übertragen
                            if(s.ReligionAbk =="Evangelisch")
                            {
                                s.ReligionAbk = "EV";
                                s.Religion_ID = 7;
                            }
                            if (s.ReligionAbk == "Römisch Katholisch")
                            {
                                s.ReligionAbk = "KR";
                                s.Religion_ID = 1;
                            }

                            AddSchüler(s);                                                        
                            try
                            {                                
                                AppBackend.Instance.SchildDB.Schueler.AddObject(s);
                                //AppBackend.Instance.SchildDB.SaveChanges();                             
                            }
                            catch (Exception ex2)
                            {
                                Console.Write("fehler add{0}", ex2.InnerException);
                            }                            
                        }                                        
                    }
                    else if (item.Key == "SchuelerErzAdr")
                    {
                        if (!ErzAdrList.Where(o => o.ID == ((SchuelerErzAdr)item.Value).ID).Any())//?
                        {                            
                            SchuelerErzAdr sea = (SchuelerErzAdr)item.Value;
                            sea.Schueler_ID = SchuelerID;
                            if (Database.AppBackend.Instance.SchildDB.SchuelerErzAdr.Any())
                                ErzID = AppBackend.Instance.SchildDB.SchuelerErzAdr.Max(o => o.ID) + 1;
                            else
                                ErzID = 0;
                            sea.ID = ErzID;
                            sea.Schueler_ID = SchuelerID;
                            if (!AppBackend.Instance.SchildDB.K_Ort.Any(o => o.PLZ == sea.ErzPLZ))
                            {
                                K_Ort ort = AppBackend.Instance.getOrtByPLZ(sea.ErzPLZ);
                                if (ort.Bezeichnung == null)
                                {
                                    ort.Bezeichnung = sea.ErzPLZ;
                                }
                                AppBackend.Instance.SchildDB.K_Ort.AddObject(ort);
                                AppBackend.Instance.SchildDB.SaveChanges();
                            }
                            try
                            {
                                AppBackend.Instance.SchildDB.SchuelerErzAdr.AddObject(sea);
                                //AppBackend.Instance.SchildDB.SaveChanges(); 
                            }
                            catch (Exception ex2)
                            {
                                Console.Write("fehler add{0}", ex2.InnerException);
                            }
                        }
                    }
                    else if (item.Key == "K_AllgAdresse") 
                    {
                        if (!BetriebList.Where(o => o.ID == ((K_AllgAdresse)item.Value).ID).Any())
                        {                            
                            K_AllgAdresse k = ((K_AllgAdresse)item.Value);
                            k.AllgAdrAdressArt = "Betrieb"; // Kammmer oder Betrieb 
                            if (Database.AppBackend.Instance.SchildDB.K_AllgAdresse.Any())
                                BeriebsID = Database.AppBackend.Instance.SchildDB.K_AllgAdresse.Max(o => o.ID) + 1;
                            else
                                BeriebsID = 0;
                            k.Sichtbar = "+";
                            k.SchulnrEigner = 174518;
                            k.ID = BeriebsID;//geht nicht keine ahnung,                            
                            try
                            {
                               Database.AppBackend.Instance.SchildDB.K_AllgAdresse.AddObject(k);
                                //Database.AppBackend.Instance.SchildDB.SaveChanges();// einfügeen wegen der speicher hierarchie
                            }
                            catch (Exception ex2)
                            {
                                Console.Write("fehler K_AllgAdresse: {0}", ex2.InnerException);
                            }
                        }
                    }
                        
                    else if (item.Key == "AllgAdrAnsprechpartner")
                    {
                        if (!AllgAdrAnsprechpartnerList.Where(o => o.ID == ((AllgAdrAnsprechpartner)item.Value).ID).Any())
                        {
                            AllgAdrAnsprechpartner Ausbilder = new AllgAdrAnsprechpartner();
                            Ausbilder = ((AllgAdrAnsprechpartner)item.Value);
                            if (Database.AppBackend.Instance.SchildDB.AllgAdrAnsprechpartner.Any())
                                Ausbilder.ID = Database.AppBackend.Instance.SchildDB.AllgAdrAnsprechpartner.Max(o => o.ID) + 1;
                            else
                                Ausbilder.ID = 0;                            

                            if (Database.AppBackend.Instance.SchildDB.K_AllgAdresse.Any())
                                Ausbilder.Adresse_ID = Database.AppBackend.Instance.SchildDB.K_AllgAdresse.Max(o => o.ID) + 1;
                            else
                                Ausbilder.Adresse_ID = 0;
                            AppBackend.Instance.SchildDB.AllgAdrAnsprechpartner.AddObject(Ausbilder);
                            try
                            {
                                AppBackend.Instance.SchildDB.SaveChanges();//EX
                            }
                            catch (Exception ex2)
                            {
                                Console.Write("fehler{0}", ex2.InnerException);
                            }    
                        }
                    }                           
                
                    else if (item.Key == "Schueler_AllgAdr")
                    {
                        if (!SchuelerAllgAdrList.Where(o => o.ID == ((Schueler_AllgAdr)item.Value).ID).Any())
                        {
                            Schueler_AllgAdr s = new Schueler_AllgAdr();
                            s = ((Schueler_AllgAdr)item.Value);
                            if (Database.AppBackend.Instance.SchildDB.Schueler_AllgAdr.Any())
                                s.ID = Database.AppBackend.Instance.SchildDB.Schueler_AllgAdr.Max(o => o.ID) + 1;
                            else
                                s.ID = 0;                            
                            
                            if (Database.AppBackend.Instance.SchildDB.K_AllgAdresse.Any())
                                s.Adresse_ID = Database.AppBackend.Instance.SchildDB.K_AllgAdresse.Max(o => o.ID) + 1;
                            else
                                s.Adresse_ID = 0;

                            if (Database.AppBackend.Instance.SchildDB.AllgAdrAnsprechpartner.Any())
                                s.Ansprechpartner_ID = Database.AppBackend.Instance.SchildDB.AllgAdrAnsprechpartner.Max(o => o.ID) + 1;
                            else
                                s.Ansprechpartner_ID = 0;                            
                            
                            s.Schueler_ID = SchuelerID;                            
                            try
                            {
                                AppBackend.Instance.SchildDB.Schueler_AllgAdr.AddObject(s);                                
                            }
                            catch (Exception ex2)
                            {
                                Console.Write("fehler add{0}", ex2.InnerException);
                            }
                        }
                    }                    
                }                
                try
                {
                    AppBackend.Instance.SchildDB.SaveChanges();//EX
                }
                catch (Exception ex2) 
                {
                    Console.Write("fehler{0}", ex2.InnerException);
                }                
        }

        delegate void SetStatusLabelDelegate(string text);
        private void SetStatusLabel(string text)
        {
            if (InvokeRequired)
            {
                Invoke(new SetStatusLabelDelegate(SetStatusLabel), new object[] { text });
            }
            else
            {
                lblStatus.Text = text;
            }
        }

        delegate void SetWorkingBarVisibleDelegate(bool visible);
        private void SetWorkingBarVisible(bool visible)
        {
            if (InvokeRequired)
            {
                Invoke(new SetWorkingBarVisibleDelegate(SetWorkingBarVisible), new object[] { visible });
            }
            else
            {
                prgWorking.Visible = visible;
            }
        }

        delegate void AddSchülerDelegate(Schueler schueler);
        private void AddSchüler(Schueler schueler)
        {
            if (InvokeRequired)
            {
                Invoke(new AddSchülerDelegate(AddSchüler), new object[]{schueler});
            }
            else
            {
                ListViewItem item = new ListViewItem(new string[] { schueler.SchuelerWebID, schueler.Vorname + " " + schueler.Name, schueler.Strasse, schueler.Bildungsgang, schueler.Aufnahmedatum.ToString() });
                item.Tag = schueler;
                lstSchueler.Items.Add(item);                 
            }
        }      
        

        private void btn_Posteingang_Click(object sender, EventArgs e)
        {
            StartDownloadMails();
        }

        private void btn_edit_Schueler_Click(object sender, EventArgs e)
        {
            OpenDetailForm();
        }

        private void lstSchueler_ItemActivate(object sender, EventArgs e)
        {
            OpenDetailForm();
        }

        private void OpenDetailForm()
        {
            if (lstSchueler.SelectedItems.Count > 0)
            {                              
                FormDetails formDetails = new FormDetails(ref lstSchueler, lstSchueler.SelectedItems[0].Index);
                formDetails.Schueler = (Schueler)lstSchueler.SelectedItems[0].Tag;                
                formDetails.ShowDialog();
            }
        }

       

        private void lstSchueler_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lstSchueler.SelectedItems.Count == 0)
            {
                btn_edit_Schueler.Enabled = false;                
                btn_Schueler_Löschen.Enabled = false;
                btn_DB_SchildNRW.Enabled = false;
            }
            else if (lstSchueler.SelectedItems.Count == 1)
            {
                btn_edit_Schueler.Enabled = true;                
                btn_Schueler_Löschen.Enabled = true;
                btn_DB_SchildNRW.Enabled = true;
            }
            else
            {
                btn_edit_Schueler.Enabled = false;
                btn_Schueler_Löschen.Enabled = false;
                btn_DB_SchildNRW.Enabled = false;
            }
        }
        private void SchuleBestimmen(Database.Schueler _Schueler)
        {
           _Schueler.LSSchulNr = _Schueler.Schule.SchulNr;
        }
        
        private void FormÜbersicht_Load(object sender, EventArgs e)
        {
            //lade DB           
            foreach (Schueler schueler in AppBackend.Instance.SchildDB.Schueler.ToList())
            {
                AddSchüler(schueler);
            }
            ToopTip();
            //ladeBD();
            //abfrage eMail
            StartDownloadMails(); //Fehler! wenn eMailzugang da ist
            //tmrMails.Enabled = true;/////
            //tmrMails.Start();////
            btn_edit_Schueler.Enabled = false;
            btn_Schueler_Löschen.Enabled = false;
            btn_DB_SchildNRW.Enabled = false;
        }
        public void ladeBD() 
        {
            lstSchueler.Clear();
            foreach (Schueler schueler in AppBackend.Instance.SchildDB.Schueler.ToList())
            {
                ListViewItem item = new ListViewItem(new string[] { schueler.ID.ToString(), schueler.Vorname + " " + schueler.Name, schueler.Strasse + " " + schueler.Hausnr, "Bildungsgang", schueler.Aufnahmedatum.ToString() });
                item.Tag = schueler;
                lstSchueler.Items.Add(item);  
            }            
        }
        private void btnSaveSchildDB_Click(object sender, EventArgs e)
        {    
        }

        private void btn_Abrechen_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btn_Suche_Click(object sender, EventArgs e)
        {
            ListeSearch(tbl_Filter_ID.Text);
        }

        private void btn_Schueler_Löschen_Click(object sender, EventArgs e)
        {            
            Schueler s = ((Schueler)lstSchueler.SelectedItems[0].Tag);
            foreach (SchuelerErzAdr EA in AppBackend.Instance.SchildDB.SchuelerErzAdr.Where(i => i.Schueler_ID == s.ID))
                AppBackend.Instance.SchildDB.DeleteObject(EA);
            foreach (Schueler_AllgAdr SAA in AppBackend.Instance.SchildDB.Schueler_AllgAdr.Where(i => i.Schueler_ID == s.ID))
            {
                foreach (AllgAdrAnsprechpartner AAAP in AppBackend.Instance.SchildDB.AllgAdrAnsprechpartner.Where(i => i.ID == SAA.Ansprechpartner_ID))
                    AppBackend.Instance.SchildDB.DeleteObject(AAAP);
                foreach (K_AllgAdresse KAA in AppBackend.Instance.SchildDB.K_AllgAdresse.Where(i => i.ID == SAA.Adresse_ID))
                    AppBackend.Instance.SchildDB.DeleteObject(KAA);                
                AppBackend.Instance.SchildDB.DeleteObject(SAA);
            }
            AppBackend.Instance.SchildDB.DeleteObject(s);
            try
            {
                AppBackend.Instance.SchildDB.SaveChanges();
            }
            catch (Exception ex3)
            {
                Console.Write("Fehler{0}", ex3.Message);
            }
            lstSchueler.Items.RemoveAt(lstSchueler.SelectedIndices[0]);
            lstSchueler.SelectedItems.Clear();           
        }
        //löschet den Schüler aus der DB VerwaltungsApp
        private void loescheSchueler(Database.Schueler _Schueler,int _i)// das schülerobjekt in der listen suchen
        {
            Schueler s = new Schueler();
            s = _Schueler;
            foreach (SchuelerErzAdr EA in AppBackend.Instance.SchildDB.SchuelerErzAdr.Where(i => i.Schueler_ID == s.ID))
                AppBackend.Instance.SchildDB.DeleteObject(EA);
            foreach (Schueler_AllgAdr SAA in AppBackend.Instance.SchildDB.Schueler_AllgAdr.Where(i => i.Schueler_ID == s.ID))
            {
                foreach (AllgAdrAnsprechpartner AAAP in AppBackend.Instance.SchildDB.AllgAdrAnsprechpartner.Where(i => i.ID == SAA.Ansprechpartner_ID))
                    AppBackend.Instance.SchildDB.DeleteObject(AAAP);
                foreach (K_AllgAdresse KAA in AppBackend.Instance.SchildDB.K_AllgAdresse.Where(i => i.ID == SAA.Adresse_ID))
                    AppBackend.Instance.SchildDB.DeleteObject(KAA);
                AppBackend.Instance.SchildDB.DeleteObject(SAA);
            }
            AppBackend.Instance.SchildDB.DeleteObject(s);
            try
            {
                AppBackend.Instance.SchildDB.SaveChanges();
                lstSchueler.Items.RemoveAt(_i);
                lstSchueler.SelectedItems.Clear();
            }
            catch (Exception ex3)
            {
                Console.Write("Fehler{0}", ex3.Message);
            }
        }

        private void btn_Schueler_anlegen_Click(object sender, EventArgs e)
        {
            Schueler SchuelerNeu = new Schueler();
            SchuelerNeu.GU_ID = GU_ID_Generieren();
            foreach (Database.Schueler _ID in Database.AppBackend.Instance.SchildDB.Schueler.ToList())
                SchuelerNeu.ID = _ID.ID + 1;
            Database.AppBackend.Instance.SchildDB.Schueler.AddObject(SchuelerNeu);
            Database.AppBackend.Instance.SchildDB.SaveChanges();
            FormAnmeldung Anmeldung = new FormAnmeldung(ref lstSchueler, ref SchuelerNeu);            
            Anmeldung.ShowDialog();            
        }
        
        private string GU_ID_Generieren()//generiert die GU_ID und vergeleicht die GU_ID ob sie schon in der DB VerwaltungApp & SchildNRW vorhanden ist 
        {                                //wenn ja wird eine neuer generiert
            string str;           
            bool GU_ID = true;
            
            do
            {
                str = GU_ID_Erstellen();
                GU_ID = true;
                foreach (Database.Schueler _Schueler in Database.AppBackend.Instance.SchildDB.Schueler.Where(o => o.GU_ID == str))
                    GU_ID = false;
                foreach (DatabaseNRW.Schueler _Schueler in DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.Schueler.Where(o => o.GU_ID == str))
                    GU_ID = false;
            } while (GU_ID==true);

            return str;
        }
        private string GU_ID_Erstellen()
        {
            int z = 0;
            char[] c = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                         'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
                         'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
                         'U', 'V', 'W', 'X', 'Y', 'Z'};

            System.Random rnd = new System.Random();
            StringBuilder Temp = new StringBuilder();
            Temp.Append("{");
            for (int i = 0; i < 8; i++)
            {
                z = rnd.Next(0, 32);
                Temp.Append(Convert.ToChar(c[z]));
            }
            Temp.Append("-");
            for (int i = 0; i < 4; i++)
            {
                z = rnd.Next(0, 32);
                Temp.Append(Convert.ToChar(c[z]));
            }
            Temp.Append("-");
            for (int i = 0; i < 4; i++)
            {
                z = rnd.Next(0, 32);
                Temp.Append(Convert.ToChar(c[z]));
            }
            Temp.Append("-");
            for (int i = 0; i < 4; i++)
            {
                z = rnd.Next(0, 32);
                Temp.Append(Convert.ToChar(c[z]));
            }
            Temp.Append("-");
            for (int i = 0; i < 12; i++)
            {
                z = rnd.Next(0, 32);
                Temp.Append(Convert.ToChar(c[z]));
            }
            Temp.Append("}");
            return Temp.ToString();
        }
        
        private void ObjSchuelerCopyNRW(Schueler _SchuelerDB)
        {
            Type Tdb = _SchuelerDB.GetType();
            DatabaseNRW.Schueler _SchuelerNRW = new DatabaseNRW.Schueler();
            Type Tnrw = _SchuelerNRW.GetType();

            PropertyInfo[] PIlist = Tdb.GetProperties();
            foreach (PropertyInfo PI in PIlist)
            {
                if (PI.GetValue(_SchuelerNRW, null) != null)
                {
                    object value = PI.GetValue(_SchuelerDB, null);
                    PropertyInfo P = Tnrw.GetProperty(PI.Name);
                    if (value is System.String)
                        if (PI.Name != "SchulerWeb!" || PI.Name != "ID" || PI.Name != "EntityState" || PI.Name != "K_EinschulungsArt" || PI.Name != "K_EinschulungsArtReference" || PI.Name != "K_FahrschuelerArt" || PI.Name != "K_FahrschuelerArtReference" || PI.Name != "K_Foerderschwerpunkt"
                            || PI.Name != "K_FoerderschwerpunktReference" || PI.Name != "K_Haltestelle" || PI.Name != "K_HaltestelleReference" || PI.Name != "K_Ortsteil" || PI.Name != "K_OrtsteilReference" || PI.Name != "K_Religion" || PI.Name != "K_ReligionReference" || PI.Name != "K_Sportbefreiung"
                            || PI.Name != "K_SportbefreiungReference" || PI.Name != "Schueler_AllgAdr" || PI.Name != "SchuelerAbgaenge" || PI.Name != "SchuelerAbiFaecher" || PI.Name != "SchuelerAbitur" || PI.Name != "SchuelerBKAbschluss" || PI.Name != "SchuelerBKAbschlussReference" || PI.Name != "SchuelerBKFaecher"
                            || PI.Name != "SchuelerErzAdr" || PI.Name != "SchuelerFHR" || PI.Name != "SchuelerFHRFaecher" || PI.Name != "SchuelerFotos" || PI.Name != "SchuelerFotosReference" || PI.Name != "SchuelerLernabschnittsdaten" || PI.Name != "SchuelerListe_Inhalt"
                            || PI.Name != "SchuelerSprachenfolge" || PI.Name != "SchuelerTelefone" || PI.Name != "SchuelerVermerke")
                            P.SetValue(_SchuelerNRW, value.ToString(), null);
                    if (value is System.Int32)
                        if (PI.Name != "SchulerWeb!" || PI.Name != "ID" || PI.Name != "EntityState" || PI.Name != "K_EinschulungsArt" || PI.Name != "K_EinschulungsArtReference" || PI.Name != "K_FahrschuelerArt" || PI.Name != "K_FahrschuelerArtReference" || PI.Name != "K_Foerderschwerpunkt"
                            || PI.Name != "K_FoerderschwerpunktReference" || PI.Name != "K_Haltestelle" || PI.Name != "K_HaltestelleReference" || PI.Name != "K_Ortsteil" || PI.Name != "K_OrtsteilReference" || PI.Name != "K_Religion" || PI.Name != "K_ReligionReference" || PI.Name != "K_Sportbefreiung"
                            || PI.Name != "K_SportbefreiungReference" || PI.Name != "Schueler_AllgAdr" || PI.Name != "SchuelerAbgaenge" || PI.Name != "SchuelerAbiFaecher" || PI.Name != "SchuelerAbitur" || PI.Name != "SchuelerBKAbschluss" || PI.Name != "SchuelerBKAbschlussReference" || PI.Name != "SchuelerBKFaecher"
                            || PI.Name != "SchuelerErzAdr" || PI.Name != "SchuelerFHR" || PI.Name != "SchuelerFHRFaecher" || PI.Name != "SchuelerFotos" || PI.Name != "SchuelerFotosReference" || PI.Name != "SchuelerLernabschnittsdaten" || PI.Name != "SchuelerListe_Inhalt"
                            || PI.Name != "SchuelerSprachenfolge" || PI.Name != "SchuelerTelefone" || PI.Name != "SchuelerVermerke")
                            P.SetValue(_SchuelerNRW, value.ToString(), null);
                }
            }
            DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.Schueler.AddObject(_SchuelerNRW);
        }        

        private void btn_DB_SchildNRW_Click(object sender, EventArgs e)
        {            
            Schueler schueler = ((Schueler)lstSchueler.SelectedItems[0].Tag);            
            BetriebeNRW(schueler,lstSchueler.SelectedIndices[0]);            
        }
        //Speichern in SchildNRW
        private void BetriebeNRW(Schueler _Schuler,int _i)
        {
            bool BetriebVorhanden = false;
            int BetriebsID = 0;
            Schueler_AllgAdr Schueler_AllgAdr_APP = new Schueler_AllgAdr();
            K_AllgAdresse K_AllgAdresse_APP = new K_AllgAdresse();

            //Betrieb in der AppDB ermitteln
            foreach (Schueler_AllgAdr SAA in Database.AppBackend.Instance.SchildDB.Schueler_AllgAdr.Where(a => a.Schueler_ID == _Schuler.ID))
                foreach (K_AllgAdresse KAA in Database.AppBackend.Instance.SchildDB.K_AllgAdresse.Where(k => k.ID == SAA.Adresse_ID))
                    K_AllgAdresse_APP = KAA;
            //den ermittelten Betrieb aus der AppDB mit den Betrieben aus der NrwDB
            foreach (DatabaseNRW.K_AllgAdresse K_AllgAdresse_NRW in DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.K_AllgAdresse.Where(x => x.AllgAdrName1 == K_AllgAdresse_APP.AllgAdrName1))
            {
                BetriebVorhanden = true;
                BetriebsID = K_AllgAdresse_NRW.ID + 1;
            }
            if (BetriebVorhanden == true)
            {
                DB2toNRW(_Schuler);//Speicher ein Schüleranmeldung ohne Betrieb in der DB SchildNRW
                loescheSchueler(_Schuler,_i);//löschet den Schüler aus der DB VerwaltungsApp
            }
            else 
            {
                DialogResult result = MessageBox.Show("Wollen Sie den Betrieb einfügen?",
                           "Betieb ist nicht vorhaben",
                           MessageBoxButtons.YesNo,
                           MessageBoxIcon.Question,
                           MessageBoxDefaultButton.Button2);
                if (result == DialogResult.Yes)
                {
                    DB2toNRWundBetrieb(_Schuler, BetriebsID);//Speicher ein Schüleranmeldung mit Betrieb in der DB SchildNRW
                    loescheSchueler(_Schuler, _i);//löschet den Schüler aus der DB VerwaltungsApp
                }
                else
                {
                    MessageBox.Show("Schüler würde nicht in die SchildNRW eingefügt");
                }                  
               
            }            

        }
        //Speicher ein Schüleranmeldung mit Betrieb in der DB SchildNRW
        private void DB2toNRWundBetrieb(Schueler schueler, int _BetriebsID) 
        {
            DatabaseNRW.Schueler schuelerNRW = new DatabaseNRW.Schueler();
            DatabaseNRW.SchuelerErzAdr SEA2 = new DatabaseNRW.SchuelerErzAdr();
            DatabaseNRW.Schueler_AllgAdr DSAA = new DatabaseNRW.Schueler_AllgAdr();
            DatabaseNRW.K_AllgAdresse DKAA = new DatabaseNRW.K_AllgAdresse();
            DatabaseNRW.K_Ort OrtNRW = new DatabaseNRW.K_Ort();
            DatabaseNRW.AllgAdrAnsprechpartner AAAP_NRW = new DatabaseNRW.AllgAdrAnsprechpartner();

            int Schueler_AllgAdr_ID = 0;
            int ErzAdrID = 0;
            int schuelerID = 0;
            int BetriebsID = 0;
            int AllgAdrAnsprechpartner = 0;
            //int OrtID = 0;

            if (DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.Schueler.Any()) 
                schuelerID = DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.Schueler.Max(o => o.ID) + 1;
            if(DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.SchuelerErzAdr.Any())
                ErzAdrID = DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.SchuelerErzAdr.Max(o => o.ID) + 1;
            if (DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.K_AllgAdresse.Any()) 
                BetriebsID = DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.K_AllgAdresse.Max(o => o.ID) + 1;
            if (DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.AllgAdrAnsprechpartner.Any())
                AllgAdrAnsprechpartner = DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.AllgAdrAnsprechpartner.Max(o => o.ID) + 1;
 
            
            if(DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.Schueler_AllgAdr.Any())
                Schueler_AllgAdr_ID = DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.Schueler_AllgAdr.Max(o => o.ID) + 1;



            if (!DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.K_Ort.Any(o => o.PLZ == schueler.PLZ))///////////Neu
            {
                K_Ort ort = AppBackend.Instance.getOrtByPLZ(schueler.PLZ);
                if (ort.Bezeichnung == null)
                {                    
                    OrtNRW.Bezeichnung = schueler.OrtAbk;
                }
                
                OrtNRW.Aenderbar = ort.Aenderbar;
                //OrtNRW.Bezeichnung = ort.Bezeichnung;
                OrtNRW.Kreis = ort.Kreis;
                OrtNRW.Land = ort.Land;
                OrtNRW.PLZ = ort.PLZ;
                OrtNRW.SchulnrEigner = ort.SchulnrEigner;
                OrtNRW.Sichtbar = ort.Sichtbar;
                OrtNRW.Sortierung = ort.Sortierung;
                DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.K_Ort.AddObject(OrtNRW);//????????????
                try
                {
                    DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.SaveChanges();//Wegen plzID
                }
                catch (Exception ex)
                {
                    Console.Write("plz 1: {0}", ex.InnerException);
                }

            }
            schuelerNRW.AbschlussDatum = schueler.AbschlussDatum;
            schuelerNRW.AktAbschnitt = schueler.AktAbschnitt;
            schuelerNRW.AktSchuljahr = schueler.AktSchuljahr;
            schuelerNRW.Anschreibdatum = schueler.Anschreibdatum;
            schuelerNRW.ASDJahrgang = schueler.ASDJahrgang;
            schuelerNRW.ASDSchulform = schueler.ASDSchulform;
            schuelerNRW.Aufnahmedatum = schueler.Aufnahmedatum;
            schuelerNRW.Aussiedler = schueler.Aussiedler;
            schuelerNRW.Autist = schueler.Autist;
            schuelerNRW.AV_Leist = schueler.AV_Leist;
            schuelerNRW.AV_Selbst = schueler.AV_Selbst;
            schuelerNRW.AV_Zuv = schueler.AV_Zuv;
            schuelerNRW.Bafoeg = schueler.Bafoeg;
            schuelerNRW.BeginnBildungsgang = schueler.BeginnBildungsgang;
            schuelerNRW.Bemerkungen = schueler.Bemerkungen;
            schuelerNRW.Beruf = schueler.Beruf;
            schuelerNRW.Berufsabschluss = schueler.Berufsabschluss;
            schuelerNRW.BerufsschulpflErf = schueler.BerufsschulpflErf;
            schuelerNRW.BilingualerZweig = schueler.BilingualerZweig;
            schuelerNRW.Buchkonto = schueler.Buchkonto;
            schuelerNRW.DauerKindergartenbesuch = schueler.DauerKindergartenbesuch;
            schuelerNRW.DSN_FHR_Text = schueler.DSN_FHR_Text;
            schuelerNRW.DSN_Text = schueler.DSN_Text;
            schuelerNRW.Duplikat = schueler.Duplikat;
            schuelerNRW.Durchschnitt = schueler.Durchschnitt;
            schuelerNRW.DurchschnittsNote = schueler.DurchschnittsNote;
            schuelerNRW.DurchschnittsnoteFHR = schueler.DurchschnittsnoteFHR;
            schuelerNRW.Einschulungsart_ID = schueler.Einschulungsart_ID;
            schuelerNRW.EinschulungsartASD = schueler.EinschulungsartASD;
            schuelerNRW.Einschulungsjahr = schueler.Einschulungsjahr;
            schuelerNRW.Email = schueler.Email;
            // fehler schuelerNRW.EntityKey = schueler.EntityKey;
            //schuelerNRW.EntityState = schueler.EntityState;
            schuelerNRW.Entlassart = schueler.Entlassart;
            schuelerNRW.Entlassdatum = schueler.Entlassdatum;
            schuelerNRW.Entlassgrund = schueler.Entlassgrund;
            schuelerNRW.Entlassjahrgang = schueler.Entlassjahrgang;
            schuelerNRW.Entlassjahrgang_ID = schueler.Entlassjahrgang_ID;
            schuelerNRW.ErsteSchulform_SI = schueler.ErsteSchulform_SI;
            schuelerNRW.ExterneSchulnr = schueler.ExterneSchulnr;
            schuelerNRW.Fachklasse_ID = schueler.Fachklasse_ID;
            schuelerNRW.FachklasseNSJ_ID = schueler.FachklasseNSJ_ID;
            schuelerNRW.Fahrschueler_ID = schueler.Fahrschueler_ID;
            schuelerNRW.Fax = schueler.Fax;
            schuelerNRW.Foerderschwerpunkt_ID = schueler.Foerderschwerpunkt_ID;
            schuelerNRW.Foerderschwerpunkt2_ID = schueler.Foerderschwerpunkt2_ID;
            schuelerNRW.FotoVorhanden = schueler.FotoVorhanden;
            schuelerNRW.Geburtsdatum = schueler.Geburtsdatum;
            schuelerNRW.GeburtslandMutter = schueler.GeburtslandMutter;
            schuelerNRW.GeburtslandSchueler = schueler.GeburtslandSchueler;
            schuelerNRW.GeburtslandVater = schueler.GeburtslandVater;
            schuelerNRW.Geburtsname = schueler.Geburtsname;
            schuelerNRW.Geburtsort = schueler.Geburtsort;
            schuelerNRW.Geloescht = schueler.Geloescht;
            schuelerNRW.Geschlecht = schueler.Geschlecht;
            schuelerNRW.Gesperrt = schueler.Gesperrt;
            schuelerNRW.GU_ID = schueler.GU_ID;
            schuelerNRW.Haltestelle_ID = schueler.Haltestelle_ID;
            schuelerNRW.HaltestelleAbk = schueler.HaltestelleAbk;
            schuelerNRW.Hausnr = schueler.Hausnr;
            schuelerNRW.ID = schueler.ID;
            schuelerNRW.IDext = schueler.IDext;
            schuelerNRW.Jahrgang = schueler.Jahrgang;
            schuelerNRW.Jahrgang_ID = schueler.Jahrgang_ID;
            schuelerNRW.JahrWechsel_SI = schueler.JahrWechsel_SI;
            schuelerNRW.JahrWechsel_SII = schueler.JahrWechsel_SII;
            schuelerNRW.JahrZuzug = schueler.JahrZuzug;
            schuelerNRW.JVA = schueler.JVA;
            //schuelerNRW.K_EinschulungsArt = schueler.K_EinschulungsArt;
            //schuelerNRW.K_EinschulungsArtReference = schueler.K_EinschulungsArtReference;
            //schuelerNRW.K_FahrschuelerArt = schueler.K_FahrschuelerArt;
            //schuelerNRW.K_FahrschuelerArtReference = schueler.K_FahrschuelerArtReference;
            //schuelerNRW.K_Foerderschwerpunkt = schueler.K_Foerderschwerpunkt;
            //schuelerNRW.K_FoerderschwerpunktReference = schueler.K_FoerderschwerpunktReference;
            //schuelerNRW.K_Haltestelle = schueler.K_Haltestelle;
            //schuelerNRW.K_HaltestelleReference = schueler.K_HaltestelleReference;
            //schuelerNRW.K_Ortsteil = schueler.K_Ortsteil;
            //schuelerNRW.K_OrtsteilReference = schueler.K_OrtsteilReference;
            //schuelerNRW.K_Religion = schueler.K_Religion;
            //schuelerNRW.K_ReligionReference = schueler.K_ReligionReference;
            //schuelerNRW.K_Sportbefreiung = schueler.K_Sportbefreiung;
            //schuelerNRW.K_SportbefreiungReference = schueler.K_SportbefreiungReference;
            schuelerNRW.KeineAuskunft = schueler.KeineAuskunft;
            schuelerNRW.Kindergarten_ID = schueler.Kindergarten_ID;
            schuelerNRW.Klasse = schueler.Klasse;
            schuelerNRW.Klassenart = schueler.Klassenart;
            schuelerNRW.KonfDruck = schueler.KonfDruck;
            schuelerNRW.Land = schueler.Land;
            schuelerNRW.Lehrer = schueler.Lehrer;
            schuelerNRW.LetzterAllgAbschluss = schueler.LetzterAllgAbschluss;
            schuelerNRW.LetzterBerufsAbschluss = schueler.LetzterBerufsAbschluss;
            schuelerNRW.LSEntlassArt = schueler.LSEntlassArt;
            schuelerNRW.LSEntlassgrund = schueler.LSEntlassgrund;
            schuelerNRW.LSFachklKennung = schueler.LSFachklKennung;
            schuelerNRW.LSFachklSIM = schueler.LSFachklSIM;
            schuelerNRW.LSJahrgang = schueler.LSJahrgang;
            schuelerNRW.LSKlassenart = schueler.LSKlassenart;
            schuelerNRW.LSRefPaed = schueler.LSRefPaed;
            schuelerNRW.LSSchulentlassDatum = schueler.LSSchulentlassDatum;
            schuelerNRW.LSSchulform = schueler.LSSchulform;
            schuelerNRW.LSSchulformSIM = schueler.LSSchulformSIM;
            schuelerNRW.LSSchulNr = schueler.LSSchulNr;
            schuelerNRW.LSSGL = schueler.LSSGL;
            schuelerNRW.LSSGL_SIM = schueler.LSSGL_SIM;
            schuelerNRW.LSVersetzung = schueler.LSVersetzung;
            schuelerNRW.Markiert = schueler.Markiert;
            schuelerNRW.Migrationshintergrund = schueler.Migrationshintergrund;
            schuelerNRW.ModifiziertAm = schueler.ModifiziertAm;
            schuelerNRW.ModifiziertVon = schueler.ModifiziertVon;
            schuelerNRW.Name = schueler.Name;
            schuelerNRW.OrgFormKrz = schueler.OrgFormKrz;
            schuelerNRW.OrtAbk = schueler.OrtAbk;
            schuelerNRW.Ortsteil_ID = schueler.Ortsteil_ID;
            schuelerNRW.PLZ = schueler.PLZ;
            schuelerNRW.PruefOrdnung = schueler.PruefOrdnung;
            schuelerNRW.RefPaed = schueler.RefPaed;
            schuelerNRW.Religion_ID = schueler.Religion_ID;
            schuelerNRW.ReligionAbk = schueler.ReligionAbk;
            schuelerNRW.Religionsabmeldung = schueler.Religionsabmeldung;
            schuelerNRW.Religionsanmeldung = schueler.Religionsanmeldung;
            //schuelerNRW.Schueler_AllgAdr = schueler.Schueler_AllgAdr;
            //schuelerNRW.SchuelerAbgaenge = schueler.SchuelerAbgaenge;
            //schuelerNRW.SchuelerAbiFaecher = schueler.SchuelerAbiFaecher;
            //schuelerNRW.SchuelerAbitur = schueler.SchuelerAbitur;
            //schuelerNRW.SchuelerBKAbschluss = schueler.SchuelerBKAbschluss;
            //schuelerNRW.SchuelerBKAbschlussReference = schueler.SchuelerBKAbschlussReference;
            //schuelerNRW.SchuelerBKFaecher = schueler.SchuelerBKFaecher;
            //schuelerNRW.SchuelerErzAdr = schueler.SchuelerErzAdr;
            //schuelerNRW.SchuelerFHR = schueler.SchuelerFHR;
            //schuelerNRW.SchuelerFHRFaecher = schueler.SchuelerFHRFaecher;
            //schuelerNRW.SchuelerFotos = schueler.SchuelerFotos;
            //schuelerNRW.SchuelerFotosReference = schueler.SchuelerFotosReference;
            //schuelerNRW.SchuelerLernabschnittsdaten = schueler.SchuelerLernabschnittsdaten;
            //schuelerNRW.SchuelerListe_Inhalt = schueler.SchuelerListe_Inhalt;
            //schuelerNRW.SchuelerSprachenfolge = schueler.SchuelerSprachenfolge;
            //schuelerNRW.SchuelerTelefone = schueler.SchuelerTelefone;
            //schuelerNRW.SchuelerVermerke = schueler.SchuelerVermerke;
            //SchuelerWebID
            schuelerNRW.Schulbuchgeldbefreit = schueler.Schulbuchgeldbefreit;
            schuelerNRW.SchulnrEigner = schueler.SchulnrEigner;
            schuelerNRW.SchulpflichtErf = schueler.SchulpflichtErf;
            schuelerNRW.Schulwechseldatum = schueler.Schulwechseldatum;
            schuelerNRW.SchulwechselNr = schueler.SchulwechselNr;
            schuelerNRW.Schwerbehinderung = schueler.Schwerbehinderung;
            schuelerNRW.Schwerpunkt_ID = schueler.Schwerpunkt_ID;
            schuelerNRW.SortierungKlasse = schueler.SortierungKlasse;
            schuelerNRW.Sportbefreiung_ID = schueler.Sportbefreiung_ID;
            schuelerNRW.SrcID = schueler.SrcID;
            schuelerNRW.StaatAbk = schueler.StaatAbk;
            schuelerNRW.StaatKrz = schueler.StaatKrz;
            schuelerNRW.StaatKrz2 = schueler.StaatKrz2;
            schuelerNRW.Status = schueler.Status;
            schuelerNRW.StatusNSJ = schueler.StatusNSJ;
            schuelerNRW.Strasse = schueler.Strasse;
            schuelerNRW.Strassenname = schueler.Strassenname;
            schuelerNRW.SV_Konfl = schueler.SV_Konfl;
            schuelerNRW.SV_Koop = schueler.SV_Koop;
            schuelerNRW.SV_Verant = schueler.SV_Verant;
            schuelerNRW.TeilnahmeSprachfoerderkurs = schueler.TeilnahmeSprachfoerderkurs;
            schuelerNRW.Telefon = schueler.Telefon;
            schuelerNRW.Uebergangsempfehlung_JG5 = schueler.Uebergangsempfehlung_JG5;
            schuelerNRW.VerkehrsspracheFamilie = schueler.VerkehrsspracheFamilie;
            schuelerNRW.VerpflichtungSprachfoerderkurs = schueler.VerpflichtungSprachfoerderkurs;
            schuelerNRW.Volljaehrig = schueler.Volljaehrig;
            schuelerNRW.Vorname = schueler.Vorname;
            schuelerNRW.Zusatz = schueler.Zusatz;
            schuelerNRW.ID = schueler.ID;
            schuelerNRW.ID = schuelerID;
            DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.Schueler.AddObject(schuelerNRW);
            try
            {
                DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.SaveChanges();
            }
            catch (Exception ex) 
            {
                Console.Write("DB2toNRWundBetrieb: {0}", ex.InnerException);
            }
            
            
            foreach (SchuelerErzAdr SEA in AppBackend.Instance.SchildDB.SchuelerErzAdr.Where(o => o.Schueler_ID == schueler.ID))
            {                
                if (!DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.K_Ort.Any(o=>o.PLZ ==SEA.ErzPLZ))
                {                    
                    K_Ort ort = AppBackend.Instance.getOrtByPLZ(SEA.ErzPLZ);
                    DatabaseNRW.K_Ort OrtSEA = new DatabaseNRW.K_Ort();
                    if (ort.Bezeichnung == null)
                    {                        
                        OrtSEA.Bezeichnung = SEA.ErzPLZ;
                    }                  
                    
                    OrtSEA.Aenderbar = ort.Aenderbar;
                    //OrtSEA.Bezeichnung = ort.Bezeichnung;                    
                    OrtSEA.Kreis = ort.Kreis;
                    OrtSEA.Land = ort.Land;
                    OrtSEA.PLZ = ort.PLZ;
                    OrtSEA.SchulnrEigner = ort.SchulnrEigner;
                    OrtSEA.Sichtbar = ort.Sichtbar;
                    OrtSEA.Sortierung = ort.Sortierung;                   
                    
                    try
                    {
                        DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.SaveChanges();
                    }
                    catch (Exception ex)
                    {
                        Console.Write("plz{0}", ex.InnerException);
                    }                    
                }
                SEA2.Anrede1 = SEA.Anrede1;
                SEA2.Anrede2 = SEA.Anrede2;
                SEA2.ErzAdrZusatz = SEA.ErzAdrZusatz;
                SEA2.ErzBemerkung = SEA.ErzBemerkung;
                SEA2.ErzEMail = SEA.ErzEMail;
                SEA2.ErzieherArt_ID = SEA.ErzieherArt_ID;
                SEA2.ErzOrtsteil_ID = SEA.ErzOrtsteil_ID;
                SEA2.ErzPLZ = SEA.ErzPLZ;
                SEA2.ErzStrasse = SEA.ErzStrasse;
                SEA2.ID = SEA.ID;
                //SEA2.K_ErzieherArt = SEA.K_ErzieherArt;
                //SEA2.K_ErzieherArtReference = SEA.K_ErzieherArtReference;
                //SEA2.K_Ortsteil = SEA.K_Ortsteil;
                //SEA2.K_OrtsteilReference = SEA.K_OrtsteilReference;
                SEA2.Name1 = SEA.Name1;
                SEA2.Name2 = SEA.Name2;
                //SEA2.Schueler = SEA.Schueler;
                SEA2.Schueler_ID = SEA.Schueler_ID;
                //SEA2.SchuelerErzFunktion = SEA.SchuelerErzFunktion;
                //SEA2.SchuelerReference = SEA.SchuelerReference;
                SEA2.SchulnrEigner = SEA.SchulnrEigner;
                SEA2.Sortierung = SEA.Sortierung;
                SEA2.Titel1 = SEA.Titel1;
                SEA2.Titel2 = SEA.Titel2;
                SEA2.Vorname1 = SEA.Vorname1;
                SEA2.Vorname2 = SEA.Vorname2;                
                SEA2.Schueler_ID = SEA.Schueler_ID;
                SEA2.Schueler_ID = schuelerID;                
                SEA2.ID = ErzAdrID;
                DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.SchuelerErzAdr.AddObject(SEA2);
            }
            try
            {
                DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.SaveChanges();
            }
            catch (Exception ex)
            {
                Console.Write("DB2toNRWundBetrieb {0}", ex.InnerException);
            }

            foreach (Schueler_AllgAdr SAA in AppBackend.Instance.SchildDB.Schueler_AllgAdr.Where(k => k.Schueler_ID == schueler.ID))
            {
                DSAA.Adresse_ID = SAA.Adresse_ID;
                DSAA.AllgAdrAnschreiben = SAA.AllgAdrAnschreiben;
                //DSAA.AllgAdrAnsprechpartner = SAA.AllgAdrAnsprechpartner;
                //DSAA.AllgAdrAnsprechpartnerReference = SAA.AllgAdrAnsprechpartnerReference;
                //DSAA.Ansprechpartner_ID = SAA.Ansprechpartner_ID;
                DSAA.Ansprechpartner_ID = AllgAdrAnsprechpartner;
                DSAA.Ausbilder = SAA.Ausbilder;
                DSAA.Betreuungslehrer_ID = SAA.Betreuungslehrer_ID;
                //fehler DSAA.EntityKey = SAA.EntityKey;
                //DSAA.EntityState = SAA.EntityState;
                //DSAA.ID = SAA.ID;
                DSAA.ID = Schueler_AllgAdr_ID;
                //DSAA.K_AllgAdresse = SAA.K_AllgAdresse;
                //DSAA.K_AllgAdresseReference = SAA.K_AllgAdresseReference;
                //DSAA.K_BeschaeftigungsArt = SAA.K_BeschaeftigungsArt;
                //DSAA.K_BeschaeftigungsArtReference = SAA.K_BeschaeftigungsArtReference;
                DSAA.Praktikum = SAA.Praktikum;
                //DSAA.Schueler = SAA.Schueler;
                DSAA.Schueler_ID = SAA.Schueler_ID;
                //DSAA.SchuelerReference = SAA.SchuelerReference;
                DSAA.SchulnrEigner = SAA.SchulnrEigner;
                DSAA.Sortierung = SAA.Sortierung;
                DSAA.Vertragsart_ID = SAA.Vertragsart_ID;
                DSAA.Vertragsbeginn = SAA.Vertragsbeginn;
                DSAA.Vertragsende = SAA.Vertragsende;
                DSAA.Schueler_ID = schuelerID; 

                foreach (K_AllgAdresse KAA in AppBackend.Instance.SchildDB.K_AllgAdresse.Where(w => w.ID == SAA.Adresse_ID))
                {
                    DKAA.Aenderbar = KAA.Aenderbar;
                    DKAA.AllgAdrAdressArt = KAA.AllgAdrAdressArt;
                    //DKAA.AllgAdrAnsprechpartner = KAA.AllgAdrAnsprechpartner;
                    DKAA.AllgAdrAusbildungsBetrieb = KAA.AllgAdrAusbildungsBetrieb;
                    DKAA.AllgAdrBemerkungen = KAA.AllgAdrBemerkungen;
                    DKAA.AllgAdrBietetPraktika = KAA.AllgAdrBietetPraktika;
                    DKAA.AllgAdrBranche = KAA.AllgAdrBranche;
                    DKAA.AllgAdrEmail = KAA.AllgAdrEmail;
                    DKAA.AllgAdrFax = KAA.AllgAdrFax;
                    DKAA.AllgAdrName1 = KAA.AllgAdrName1;
                    DKAA.AllgAdrName2 = KAA.AllgAdrName2;
                    DKAA.AllgAdrPLZ = KAA.AllgAdrPLZ;
                    DKAA.AllgAdrStrasse = KAA.AllgAdrStrasse;
                    DKAA.AllgAdrTelefon1 = KAA.AllgAdrTelefon1;
                    DKAA.AllgAdrTelefon2 = KAA.AllgAdrTelefon2;
                    DKAA.AllgAdrZusatz1 = KAA.AllgAdrZusatz1;
                    DKAA.AllgAdrZusatz2 = KAA.AllgAdrZusatz2;
                    //fehler DKAA.EntityKey = KAA.EntityKey;
                    //DKAA.EntityState = KAA.EntityState;
                    DKAA.ID = KAA.ID;
                    DKAA.Massnahmentraeger = KAA.Massnahmentraeger;
                    //DKAA.Schueler_AllgAdr = KAA.Schueler_AllgAdr;
                    DKAA.SchulnrEigner = KAA.SchulnrEigner;
                    DKAA.Sichtbar = KAA.Sichtbar;
                    DKAA.Sortierung = KAA.Sortierung;
                }
                foreach(Database.AllgAdrAnsprechpartner AAAP in AppBackend.Instance.SchildDB.AllgAdrAnsprechpartner.Where(o=>o.ID == SAA.Ansprechpartner_ID))
                {
                    AAAP_NRW.Abteilung = AAAP.Abteilung;
                    //AAAP_NRW.Adresse_ID = AAAP.Adresse_ID;
                    AAAP_NRW.Adresse_ID =  BetriebsID;
                    AAAP_NRW.Anrede = AAAP.Anrede;
                    AAAP_NRW.EMail = AAAP.EMail;
                    AAAP_NRW.ID = AllgAdrAnsprechpartner;
                    //AAAP_NRW.K_AllgAdresse = AAAP.K_AllgAdresse;
                    AAAP_NRW.Name = AAAP.Name;
                    //AAAP_NRW.Schueler_AllgAdr = AAAP.Schueler_AllgAdr;
                    AAAP_NRW.SchulnrEigner = AAAP.SchulnrEigner;
                    AAAP_NRW.Telefon = AAAP.Telefon;
                    AAAP_NRW.Titel = AAAP.Titel;
                    AAAP_NRW.Vorname = AAAP.Vorname;
                }
            }            
            DKAA.ID = BetriebsID;
            DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.K_AllgAdresse.AddObject(DKAA);
            try
            {
                DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.SaveChanges();
            }
            catch (Exception ex3)
            {
                Console.Write("DB2toNRWundBetrieb: {0}", ex3.InnerException);
            }
            DSAA.Adresse_ID = BetriebsID;
            DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.AllgAdrAnsprechpartner.AddObject(AAAP_NRW);
            try
            {
                DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.SaveChanges();
            }
            catch (Exception ex3)
            {
                Console.Write("DB2toNRW {0}", ex3.InnerException);
            }
            DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.Schueler_AllgAdr.AddObject(DSAA);
            try
            {
                DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.SaveChanges();
            }
            catch (Exception ex3)
            {
                Console.Write("DB2toNRW {0}", ex3.InnerException);
            }
            
        }
        //Speicher ein Schüleranmeldung ohne Betrieb in der DB SchildNRW
        private void DB2toNRW(Schueler schueler)////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        {
            DatabaseNRW.Schueler schuelerNRW = new DatabaseNRW.Schueler();
            DatabaseNRW.SchuelerErzAdr SEA2 = new DatabaseNRW.SchuelerErzAdr();
            DatabaseNRW.Schueler_AllgAdr DSAA = new DatabaseNRW.Schueler_AllgAdr();
            DatabaseNRW.AllgAdrAnsprechpartner AAAP_NRW = new DatabaseNRW.AllgAdrAnsprechpartner();
            //DatabaseNRW.K_Ort OrtNRW = new DatabaseNRW.K_Ort();
            int schuelerID = 0;
            int ErzAdrID = 0;
            int Schueler_AllgAdrID = 0;
            int BetriebsID = 0;
            int OrtID = 0;
            int AllgAdrAnsprechpartner = 0;

            if (DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.AllgAdrAnsprechpartner.Any())
                AllgAdrAnsprechpartner = DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.AllgAdrAnsprechpartner.Max(o => o.ID) + 1;
            else
                AllgAdrAnsprechpartner = 0;
            if (DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.Schueler.Any())
                schuelerID = DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.Schueler.Max(o => o.ID) + 1;
            else
                schuelerID = 0;
            if(DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.SchuelerErzAdr.Any())
                ErzAdrID = DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.SchuelerErzAdr.Max(o => o.ID) + 1;
            else
                ErzAdrID = 0;
            if (DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.Schueler_AllgAdr.Any())
                Schueler_AllgAdrID = DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.Schueler_AllgAdr.Max(o => o.ID) + 1;
            else
                Schueler_AllgAdrID = 0;
            if (DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.K_Ort.Any())
                OrtID = DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.K_Ort.Max(o => o.ID) + 1;
            else
                OrtID = 0;
            
            if (!DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.K_Ort.Any(o => o.PLZ == schueler.PLZ))///////////Neu
            {
                K_Ort ort = AppBackend.Instance.getOrtByPLZ(schueler.PLZ);
                DatabaseNRW.K_Ort OrtNRW = new DatabaseNRW.K_Ort();
                if (ort.Bezeichnung == null)
                {
                    OrtNRW.Bezeichnung = schueler.OrtAbk;
                }
                OrtNRW.ID = OrtID;
                OrtNRW.Aenderbar = ort.Aenderbar;
                //OrtNRW.Bezeichnung = ort.Bezeichnung;
                OrtNRW.Kreis = ort.Kreis;
                OrtNRW.Land = ort.Land;
                OrtNRW.PLZ = ort.PLZ;
                OrtNRW.SchulnrEigner = ort.SchulnrEigner;
                OrtNRW.Sichtbar = ort.Sichtbar;
                OrtNRW.Sortierung = ort.Sortierung;
                DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.K_Ort.AddObject(OrtNRW);
                try
                {
                    DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.SaveChanges();//Wegen plzID
                }
                catch(Exception ex)
                {
                    Console.Write("PLZ f1{0}", ex.InnerException);
                }
            }

            schuelerNRW.AbschlussDatum = schueler.AbschlussDatum;
            schuelerNRW.AktAbschnitt = schueler.AktAbschnitt;
            schuelerNRW.AktSchuljahr = schueler.AktSchuljahr;
            schuelerNRW.Anschreibdatum = schueler.Anschreibdatum;
            schuelerNRW.ASDJahrgang = schueler.ASDJahrgang;
            schuelerNRW.ASDSchulform = schueler.ASDSchulform;
            schuelerNRW.Aufnahmedatum = schueler.Aufnahmedatum;
            schuelerNRW.Aussiedler = schueler.Aussiedler;
            schuelerNRW.Autist = schueler.Autist;
            schuelerNRW.AV_Leist = schueler.AV_Leist;
            schuelerNRW.AV_Selbst = schueler.AV_Selbst;
            schuelerNRW.AV_Zuv = schueler.AV_Zuv;
            schuelerNRW.Bafoeg = schueler.Bafoeg;
            schuelerNRW.BeginnBildungsgang = schueler.BeginnBildungsgang;
            schuelerNRW.Bemerkungen = schueler.Bemerkungen;
            schuelerNRW.Beruf = schueler.Beruf;
            schuelerNRW.Berufsabschluss = schueler.Berufsabschluss;
            schuelerNRW.BerufsschulpflErf = schueler.BerufsschulpflErf;
            schuelerNRW.BilingualerZweig = schueler.BilingualerZweig;
            schuelerNRW.Buchkonto = schueler.Buchkonto;
            schuelerNRW.DauerKindergartenbesuch = schueler.DauerKindergartenbesuch;
            schuelerNRW.DSN_FHR_Text = schueler.DSN_FHR_Text;
            schuelerNRW.DSN_Text = schueler.DSN_Text;
            schuelerNRW.Duplikat = schueler.Duplikat;
            schuelerNRW.Durchschnitt = schueler.Durchschnitt;
            schuelerNRW.DurchschnittsNote = schueler.DurchschnittsNote;
            schuelerNRW.DurchschnittsnoteFHR = schueler.DurchschnittsnoteFHR;
            schuelerNRW.Einschulungsart_ID = schueler.Einschulungsart_ID;
            schuelerNRW.EinschulungsartASD = schueler.EinschulungsartASD;
            schuelerNRW.Einschulungsjahr = schueler.Einschulungsjahr;
            schuelerNRW.Email = schueler.Email;
            // fehler schuelerNRW.EntityKey = schueler.EntityKey;
            //schuelerNRW.EntityState = schueler.EntityState;
            schuelerNRW.Entlassart = schueler.Entlassart;
            schuelerNRW.Entlassdatum = schueler.Entlassdatum;
            schuelerNRW.Entlassgrund = schueler.Entlassgrund;
            schuelerNRW.Entlassjahrgang = schueler.Entlassjahrgang;
            schuelerNRW.Entlassjahrgang_ID = schueler.Entlassjahrgang_ID;
            schuelerNRW.ErsteSchulform_SI = schueler.ErsteSchulform_SI;
            schuelerNRW.ExterneSchulnr = schueler.ExterneSchulnr;
            schuelerNRW.Fachklasse_ID = schueler.Fachklasse_ID;
            schuelerNRW.FachklasseNSJ_ID = schueler.FachklasseNSJ_ID;
            schuelerNRW.Fahrschueler_ID = schueler.Fahrschueler_ID;
            schuelerNRW.Fax = schueler.Fax;
            schuelerNRW.Foerderschwerpunkt_ID = schueler.Foerderschwerpunkt_ID;
            schuelerNRW.Foerderschwerpunkt2_ID = schueler.Foerderschwerpunkt2_ID;
            schuelerNRW.FotoVorhanden = schueler.FotoVorhanden;
            schuelerNRW.Geburtsdatum = schueler.Geburtsdatum;
            schuelerNRW.GeburtslandMutter = schueler.GeburtslandMutter;
            schuelerNRW.GeburtslandSchueler = schueler.GeburtslandSchueler;
            schuelerNRW.GeburtslandVater = schueler.GeburtslandVater;
            schuelerNRW.Geburtsname = schueler.Geburtsname;
            schuelerNRW.Geburtsort = schueler.Geburtsort;
            schuelerNRW.Geloescht = schueler.Geloescht;
            schuelerNRW.Geschlecht = schueler.Geschlecht;
            schuelerNRW.Gesperrt = schueler.Gesperrt;
            schuelerNRW.GU_ID = schueler.GU_ID;
            schuelerNRW.Haltestelle_ID = schueler.Haltestelle_ID;
            schuelerNRW.HaltestelleAbk = schueler.HaltestelleAbk;
            schuelerNRW.Hausnr = schueler.Hausnr;
            schuelerNRW.ID = schueler.ID;            
            schuelerNRW.IDext = schueler.IDext;
            schuelerNRW.Jahrgang = schueler.Jahrgang;
            schuelerNRW.Jahrgang_ID = schueler.Jahrgang_ID;
            schuelerNRW.JahrWechsel_SI = schueler.JahrWechsel_SI;
            schuelerNRW.JahrWechsel_SII = schueler.JahrWechsel_SII;
            schuelerNRW.JahrZuzug = schueler.JahrZuzug;
            schuelerNRW.JVA = schueler.JVA;
            //schuelerNRW.K_EinschulungsArt = schueler.K_EinschulungsArt;
            //schuelerNRW.K_EinschulungsArtReference = schueler.K_EinschulungsArtReference;
            //schuelerNRW.K_FahrschuelerArt = schueler.K_FahrschuelerArt;
            //schuelerNRW.K_FahrschuelerArtReference = schueler.K_FahrschuelerArtReference;
            //schuelerNRW.K_Foerderschwerpunkt = schueler.K_Foerderschwerpunkt;
            //schuelerNRW.K_FoerderschwerpunktReference = schueler.K_FoerderschwerpunktReference;
            //schuelerNRW.K_Haltestelle = schueler.K_Haltestelle;
            //schuelerNRW.K_HaltestelleReference = schueler.K_HaltestelleReference;
            //schuelerNRW.K_Ortsteil = schueler.K_Ortsteil;
            //schuelerNRW.K_OrtsteilReference = schueler.K_OrtsteilReference;
            //schuelerNRW.K_Religion = schueler.K_Religion;
            //schuelerNRW.K_ReligionReference = schueler.K_ReligionReference;
            //schuelerNRW.K_Sportbefreiung = schueler.K_Sportbefreiung;
            //schuelerNRW.K_SportbefreiungReference = schueler.K_SportbefreiungReference;
            schuelerNRW.KeineAuskunft = schueler.KeineAuskunft;
            schuelerNRW.Kindergarten_ID = schueler.Kindergarten_ID;
            schuelerNRW.Klasse = schueler.Klasse;
            schuelerNRW.Klassenart = schueler.Klassenart;
            schuelerNRW.KonfDruck = schueler.KonfDruck;
            schuelerNRW.Land = schueler.Land;
            schuelerNRW.Lehrer = schueler.Lehrer;
            schuelerNRW.LetzterAllgAbschluss = schueler.LetzterAllgAbschluss;
            schuelerNRW.LetzterBerufsAbschluss = schueler.LetzterBerufsAbschluss;
            schuelerNRW.LSEntlassArt = schueler.LSEntlassArt;
            schuelerNRW.LSEntlassgrund = schueler.LSEntlassgrund;
            schuelerNRW.LSFachklKennung = schueler.LSFachklKennung;
            schuelerNRW.LSFachklSIM = schueler.LSFachklSIM;
            schuelerNRW.LSJahrgang = schueler.LSJahrgang;
            schuelerNRW.LSKlassenart = schueler.LSKlassenart;
            schuelerNRW.LSRefPaed = schueler.LSRefPaed;
            schuelerNRW.LSSchulentlassDatum = schueler.LSSchulentlassDatum;
            schuelerNRW.LSSchulform = schueler.LSSchulform;
            schuelerNRW.LSSchulformSIM = schueler.LSSchulformSIM;
            schuelerNRW.LSSchulNr = schueler.LSSchulNr;
            schuelerNRW.LSSGL = schueler.LSSGL;
            schuelerNRW.LSSGL_SIM = schueler.LSSGL_SIM;
            schuelerNRW.LSVersetzung = schueler.LSVersetzung;
            schuelerNRW.Markiert = schueler.Markiert;
            schuelerNRW.Migrationshintergrund = schueler.Migrationshintergrund;
            schuelerNRW.ModifiziertAm = schueler.ModifiziertAm;
            schuelerNRW.ModifiziertVon = schueler.ModifiziertVon;
            schuelerNRW.Name = schueler.Name;
            schuelerNRW.OrgFormKrz = schueler.OrgFormKrz;
            schuelerNRW.OrtAbk = schueler.OrtAbk;
            schuelerNRW.Ortsteil_ID = schueler.Ortsteil_ID;
            schuelerNRW.PLZ = schueler.PLZ;
            schuelerNRW.PruefOrdnung = schueler.PruefOrdnung;
            schuelerNRW.RefPaed = schueler.RefPaed;
            schuelerNRW.Religion_ID = schueler.Religion_ID;
            schuelerNRW.ReligionAbk = schueler.ReligionAbk;
            schuelerNRW.Religionsabmeldung = schueler.Religionsabmeldung;
            schuelerNRW.Religionsanmeldung = schueler.Religionsanmeldung;
            //schuelerNRW.Schueler_AllgAdr = schueler.Schueler_AllgAdr;
            //schuelerNRW.SchuelerAbgaenge = schueler.SchuelerAbgaenge;
            //schuelerNRW.SchuelerAbiFaecher = schueler.SchuelerAbiFaecher;
            //schuelerNRW.SchuelerAbitur = schueler.SchuelerAbitur;
            //schuelerNRW.SchuelerBKAbschluss = schueler.SchuelerBKAbschluss;
            //schuelerNRW.SchuelerBKAbschlussReference = schueler.SchuelerBKAbschlussReference;
            //schuelerNRW.SchuelerBKFaecher = schueler.SchuelerBKFaecher;
            //schuelerNRW.SchuelerErzAdr = schueler.SchuelerErzAdr;
            //schuelerNRW.SchuelerFHR = schueler.SchuelerFHR;
            //schuelerNRW.SchuelerFHRFaecher = schueler.SchuelerFHRFaecher;
            //schuelerNRW.SchuelerFotos = schueler.SchuelerFotos;
            //schuelerNRW.SchuelerFotosReference = schueler.SchuelerFotosReference;
            //schuelerNRW.SchuelerLernabschnittsdaten = schueler.SchuelerLernabschnittsdaten;
            //schuelerNRW.SchuelerListe_Inhalt = schueler.SchuelerListe_Inhalt;
            //schuelerNRW.SchuelerSprachenfolge = schueler.SchuelerSprachenfolge;
            //schuelerNRW.SchuelerTelefone = schueler.SchuelerTelefone;
            //schuelerNRW.SchuelerVermerke = schueler.SchuelerVermerke;
            //SchuelerWebID
            schuelerNRW.Schulbuchgeldbefreit = schueler.Schulbuchgeldbefreit;
            schuelerNRW.SchulnrEigner = schueler.SchulnrEigner;
            schuelerNRW.SchulpflichtErf = schueler.SchulpflichtErf;
            schuelerNRW.Schulwechseldatum = schueler.Schulwechseldatum;
            schuelerNRW.SchulwechselNr = schueler.SchulwechselNr;
            schuelerNRW.Schwerbehinderung = schueler.Schwerbehinderung;
            schuelerNRW.Schwerpunkt_ID = schueler.Schwerpunkt_ID;
            schuelerNRW.SortierungKlasse = schueler.SortierungKlasse;
            schuelerNRW.Sportbefreiung_ID = schueler.Sportbefreiung_ID;
            schuelerNRW.SrcID = schueler.SrcID;
            schuelerNRW.StaatAbk = schueler.StaatAbk;
            schuelerNRW.StaatKrz = schueler.StaatKrz;
            schuelerNRW.StaatKrz2 = schueler.StaatKrz2;
            schuelerNRW.Status = schueler.Status;
            schuelerNRW.StatusNSJ = schueler.StatusNSJ;
            schuelerNRW.Strasse = schueler.Strasse;
            schuelerNRW.Strassenname = schueler.Strassenname;
            schuelerNRW.SV_Konfl = schueler.SV_Konfl;
            schuelerNRW.SV_Koop = schueler.SV_Koop;
            schuelerNRW.SV_Verant = schueler.SV_Verant;
            schuelerNRW.TeilnahmeSprachfoerderkurs = schueler.TeilnahmeSprachfoerderkurs;
            schuelerNRW.Telefon = schueler.Telefon;
            schuelerNRW.Uebergangsempfehlung_JG5 = schueler.Uebergangsempfehlung_JG5;
            schuelerNRW.VerkehrsspracheFamilie = schueler.VerkehrsspracheFamilie;
            schuelerNRW.VerpflichtungSprachfoerderkurs = schueler.VerpflichtungSprachfoerderkurs;
            schuelerNRW.Volljaehrig = schueler.Volljaehrig;
            schuelerNRW.Vorname = schueler.Vorname;
            schuelerNRW.Zusatz = schueler.Zusatz;
            schuelerNRW.ID = schueler.ID;
            
            schuelerNRW.ID = schuelerID;
            DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.Schueler.AddObject(schuelerNRW);
            try
            {
                DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.SaveChanges();
            }
            catch (Exception ex3)
            {
                Console.Write("DB2toNRW: {0}", ex3.InnerException);
            }


            foreach (SchuelerErzAdr SEA in AppBackend.Instance.SchildDB.SchuelerErzAdr.Where(o => o.Schueler_ID == schueler.ID))
            {                

                //DatabaseNRW.K_Ort OrtSEA = new DatabaseNRW.K_Ort();
                
                int OrtSEA_ID = 0;
                if (DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.K_Ort.Any())
                    OrtSEA_ID = DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.K_Ort.Max(o => o.ID) + 1;
                else
                    OrtSEA_ID = 0;
                
                if (!DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.K_Ort.Any(o => o.PLZ == SEA.ErzPLZ))
                {
                    K_Ort ort = AppBackend.Instance.getOrtByPLZ(SEA.ErzPLZ);
                    DatabaseNRW.K_Ort OrtSEA = new DatabaseNRW.K_Ort();
                    if (ort.Bezeichnung == null)
                    {
                        OrtSEA.Bezeichnung = SEA.ErzPLZ;
                    }
                    OrtSEA.ID = OrtSEA_ID;
                    OrtSEA.Aenderbar = ort.Aenderbar;
                   // = ort.Bezeichnung;
                    OrtSEA.Kreis = ort.Kreis;
                    OrtSEA.Land = ort.Land;
                    OrtSEA.PLZ = ort.PLZ;
                    OrtSEA.SchulnrEigner = ort.SchulnrEigner;
                    OrtSEA.Sichtbar = ort.Sichtbar;
                    OrtSEA.Sortierung = ort.Sortierung;
                    DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.K_Ort.AddObject(OrtSEA);
                    try
                    {
                        DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.SaveChanges();
                    }
                    catch (Exception ex)
                    {
                        Console.Write("plz2: {0}", ex.InnerException);
                    }
                }
                SEA2.Anrede1 = SEA.Anrede1;
                SEA2.Anrede2 = SEA.Anrede2;
                SEA2.ErzAdrZusatz = SEA.ErzAdrZusatz;
                SEA2.ErzBemerkung = SEA.ErzBemerkung;
                SEA2.ErzEMail = SEA.ErzEMail;
                SEA2.ErzieherArt_ID = SEA.ErzieherArt_ID;
                SEA2.ErzOrtsteil_ID = SEA.ErzOrtsteil_ID;
                SEA2.ErzPLZ = SEA.ErzPLZ;
                SEA2.ErzStrasse = SEA.ErzStrasse;                
                SEA2.ID = SEA.ID;
                //SEA2.K_ErzieherArt = SEA.K_ErzieherArt;
                //SEA2.K_ErzieherArtReference = SEA.K_ErzieherArtReference;
                //SEA2.K_Ortsteil = SEA.K_Ortsteil;
                //SEA2.K_OrtsteilReference = SEA.K_OrtsteilReference;
                SEA2.Name1 = SEA.Name1;
                SEA2.Name2 = SEA.Name2;
                //SEA2.Schueler = SEA.Schueler;
                SEA2.Schueler_ID = SEA.Schueler_ID;
                //SEA2.SchuelerErzFunktion = SEA.SchuelerErzFunktion;
                //SEA2.SchuelerReference = SEA.SchuelerReference;
                SEA2.SchulnrEigner = SEA.SchulnrEigner;
                SEA2.Sortierung = SEA.Sortierung;
                SEA2.Titel1 = SEA.Titel1;
                SEA2.Titel2 = SEA.Titel2;
                SEA2.Vorname1 = SEA.Vorname1;
                SEA2.Vorname2 = SEA.Vorname2;
                SEA2.Schueler_ID = schuelerID;
                SEA2.ID = ErzAdrID;                
                DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.SchuelerErzAdr.AddObject(SEA2);
            }
            try
            {
                DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.SaveChanges();
            }
            catch (Exception ex3)
            {
                Console.Write("DB2toNRW {0}", ex3.InnerException);
            }
            

            foreach (Schueler_AllgAdr SAA in AppBackend.Instance.SchildDB.Schueler_AllgAdr.Where(k => k.Schueler_ID == schueler.ID))
            {
                
                foreach (Database.K_AllgAdresse K_AllgAdresseApp in Database.AppBackend.Instance.SchildDB.K_AllgAdresse.Where(o => o.ID == SAA.Adresse_ID))
                    foreach (DatabaseNRW.K_AllgAdresse K_AllgAdresseNRW in DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.K_AllgAdresse.Where(o => o.AllgAdrName1 == K_AllgAdresseApp.AllgAdrName1))
                        BeriebsID = K_AllgAdresseNRW.ID;
                 
                
                DSAA.Adresse_ID = SAA.Adresse_ID;                
                DSAA.AllgAdrAnschreiben = SAA.AllgAdrAnschreiben;
                //DSAA.AllgAdrAnsprechpartner = SAA.AllgAdrAnsprechpartner;
                //DSAA.AllgAdrAnsprechpartnerReference = SAA.AllgAdrAnsprechpartnerReference;
                DSAA.Ansprechpartner_ID = AllgAdrAnsprechpartner;
                //DSAA.Ansprechpartner_ID = SAA.Ansprechpartner_ID;
                DSAA.Ausbilder = SAA.Ausbilder;
                DSAA.Betreuungslehrer_ID = SAA.Betreuungslehrer_ID;
                //fehler DSAA.EntityKey = SAA.EntityKey;
                //DSAA.EntityState = SAA.EntityState;
                //DSAA.ID = SAA.ID;
                DSAA.ID = Schueler_AllgAdrID;
                //DSAA.K_AllgAdresse = SAA.K_AllgAdresse;
                //DSAA.K_AllgAdresseReference = SAA.K_AllgAdresseReference;
                //DSAA.K_BeschaeftigungsArt = SAA.K_BeschaeftigungsArt;
                //DSAA.K_BeschaeftigungsArtReference = SAA.K_BeschaeftigungsArtReference;
                DSAA.Praktikum = SAA.Praktikum;
                //DSAA.Schueler = SAA.Schueler;
                DSAA.Schueler_ID = SAA.Schueler_ID;
                //DSAA.SchuelerReference = SAA.SchuelerReference;
                DSAA.SchulnrEigner = SAA.SchulnrEigner;
                DSAA.Sortierung = SAA.Sortierung;
                DSAA.Vertragsart_ID = SAA.Vertragsart_ID;
                DSAA.Vertragsbeginn = SAA.Vertragsbeginn;
                DSAA.Vertragsende = SAA.Vertragsende;
                DSAA.Schueler_ID = schuelerID;
                //DSAA.Adresse_ID = Schueler_AllgAdrID;
                //DSAA.Adresse_ID = 1;//BetriebsID;
                foreach (Database.K_AllgAdresse K_AllgAdresseApp in Database.AppBackend.Instance.SchildDB.K_AllgAdresse.Where(o => o.ID == SAA.Adresse_ID))
                    foreach (DatabaseNRW.K_AllgAdresse K_AllgAdresseNRW in DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.K_AllgAdresse.Where(o => o.AllgAdrName1 == K_AllgAdresseApp.AllgAdrName1))
                        DSAA.Adresse_ID = K_AllgAdresseNRW.ID;
                /*
                DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.Schueler_AllgAdr.AddObject(DSAA);
                try
                {
                    DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.SaveChanges();
                }
                catch (Exception ex3)
                {
                    Console.Write("DB2toNRW {0}", ex3.InnerException);
                }*/
                foreach (Database.AllgAdrAnsprechpartner AAAP in AppBackend.Instance.SchildDB.AllgAdrAnsprechpartner.Where(o => o.ID == SAA.Ansprechpartner_ID))
                {
                    AAAP_NRW.Abteilung = AAAP.Abteilung;
                    //AAAP_NRW.Adresse_ID = AAAP.Adresse_ID;
                    AAAP_NRW.Adresse_ID = BeriebsID;
                    AAAP_NRW.Anrede = AAAP.Anrede;
                    AAAP_NRW.EMail = AAAP.EMail;
                    AAAP_NRW.ID = AllgAdrAnsprechpartner;
                    //AAAP_NRW.K_AllgAdresse = AAAP.K_AllgAdresse;
                    AAAP_NRW.Name = AAAP.Name;
                    //AAAP_NRW.Schueler_AllgAdr = AAAP.Schueler_AllgAdr;
                    AAAP_NRW.SchulnrEigner = AAAP.SchulnrEigner;
                    AAAP_NRW.Telefon = AAAP.Telefon;
                    AAAP_NRW.Titel = AAAP.Titel;
                    AAAP_NRW.Vorname = AAAP.Vorname;
                }
            }
            
            DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.AllgAdrAnsprechpartner.AddObject(AAAP_NRW);
            try
            {
                DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.SaveChanges();
            }
            catch (Exception ex3)
            {
                Console.Write("DB2toNRW {0}", ex3.InnerException);
            }
            DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.Schueler_AllgAdr.AddObject(DSAA);
            try
            {
                DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.SaveChanges();
            }
            catch (Exception ex3)
            {
                Console.Write("DB2toNRW {0}", ex3.InnerException);
            }             
        }

       

        private void fillK_AllgAdresseNRW(DatabaseNRW.K_AllgAdresse _KAA) 
        {
            DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.K_AllgAdresse.AddObject(_KAA);
            DatabaseNRW.AppBackendNRW.Instance.SchildDBNRW.SaveChanges();
        }
        private void fillbetrieb(K_AllgAdresse KAA) 
        {           
            DatabaseNRW.K_AllgAdresse DKAA = new DatabaseNRW.K_AllgAdresse();
            
            DKAA.Aenderbar = KAA.Aenderbar;
            //DKAA.AllgAdrAdressArt = KAA.AllgAdrAdressArt;//fehler
            //DKAA.AllgAdrAnsprechpartner = KAA.AllgAdrAnsprechpartner;
            DKAA.AllgAdrAusbildungsBetrieb = KAA.AllgAdrAusbildungsBetrieb;
            DKAA.AllgAdrBemerkungen = KAA.AllgAdrBemerkungen;
            DKAA.AllgAdrBietetPraktika = KAA.AllgAdrBietetPraktika;
            DKAA.AllgAdrBranche = KAA.AllgAdrBranche;
            DKAA.AllgAdrEmail = KAA.AllgAdrEmail;
            DKAA.AllgAdrFax = KAA.AllgAdrFax;
            DKAA.AllgAdrName1 = KAA.AllgAdrName1;
            DKAA.AllgAdrName2 = KAA.AllgAdrName2;
            DKAA.AllgAdrPLZ = KAA.AllgAdrPLZ;
            DKAA.AllgAdrStrasse = KAA.AllgAdrStrasse;
            DKAA.AllgAdrTelefon1 = KAA.AllgAdrTelefon1;
            DKAA.AllgAdrTelefon2 = KAA.AllgAdrTelefon2;
            DKAA.AllgAdrZusatz1 = KAA.AllgAdrZusatz1;
            DKAA.AllgAdrZusatz2 = KAA.AllgAdrZusatz2;
            //DKAA.EntityKey = KAA.EntityKey;
            //DKAA.EntityState = KAA.EntityState;
            DKAA.ID = KAA.ID;
            DKAA.Massnahmentraeger = KAA.Massnahmentraeger;
            //DKAA.Schueler_AllgAdr = KAA.Schueler_AllgAdr;
            DKAA.SchulnrEigner = KAA.SchulnrEigner;
            DKAA.Sichtbar = KAA.Sichtbar;
            DKAA.Sortierung = KAA.Sortierung;

            fillK_AllgAdresseNRW(DKAA);
        }
        private void ToopTip() 
        {
            ToolTip toolTip1 = new ToolTip();
            toolTip1.ShowAlways = true;
            toolTip1.SetToolTip(btn_DB_SchildNRW, "Speichern in der Datenbank SchildNRW");
            toolTip1.SetToolTip(btn_edit_Schueler, "Öffnet von Schüler das Detailformular");
            toolTip1.SetToolTip(btn_Schueler_Löschen, "Entfernt den Schüler");
            toolTip1.SetToolTip(btn_Abrechen, "Schließt das Programm");
            toolTip1.SetToolTip(btn_Suche, "Druchsucht die Liste anch die WebID");
        }
        private void ListeSearch(string _search)
        {
            ListViewItem seachItem = lstSchueler.FindItemWithText(_search,false,0);            
            if (seachItem != null)
            {
                lstSchueler.Select();
                lstSchueler.FullRowSelect = true;                
                lstSchueler.Items[seachItem.Index].Selected = true;
                lstSchueler.TopItem = seachItem;
            }
            else
            {
                MessageBox.Show("WebID nicht vorhaben");
            }

        }

        private void tbl_Filter_ID_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                ListeSearch(tbl_Filter_ID.Text);
            }
        }
    }
}
